home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 1.1 KB | 51 lines | [TEXT/CWIE] |
- // RedBlackTree.h
-
- #ifndef RedBlackTree_h
- #define RedBlackTree_h
-
- #ifndef Tree_h
- #include "Tree.h"
- #endif
- #ifndef Integers_h
- #include "Integers.h"
- #endif
-
- class RedBlackTree: private Tree
- {
- friend class RedBlackNode;
-
- private:
- uint32 blackHeight;
-
- static RedBlackNode *DownCast( TreeNode *n );
- static const RedBlackNode *DownCast( const TreeNode *n );
-
- void FixRedChain( RedBlackNode& );
- void Redden( RedBlackNode& );
-
- public:
- RedBlackTree();
- ~RedBlackTree();
-
- void Add( RedBlackNode&, AtRoot );
- void Add( RedBlackNode&, Before, RedBlackNode& );
- void Add( RedBlackNode&, After, RedBlackNode& );
-
- void Remove( RedBlackNode& );
- void RemoveAll();
-
- Tree::IsEmpty;
-
- const RedBlackNode *Root() const { return DownCast( Tree::Root() ); }
- const RedBlackNode *First() const { return DownCast( Tree::First() ); }
- const RedBlackNode *Last() const { return DownCast( Tree::Last() ); }
-
- RedBlackNode *Root() { return DownCast( Tree::Root() ); }
- RedBlackNode *First() { return DownCast( Tree::First() ); }
- RedBlackNode *Last() { return DownCast( Tree::Last() ); }
-
- bool Valid() const;
- };
-
- #endif
-